Lista 6 · Vetores (Arrays Unidimensionais) em Linguagem C
Imagine um prédio com vários apartamentos. Cada apartamento:
Um vetor é exatamente isso: uma sequência de "caixinhas" numeradas, todas do mesmo tipo, onde você pode guardar valores.
📝 Declaração de um vetor:
int numeros[10]; // 10 "caixinhas" para números inteiros
float notas[20]; // 20 "caixinhas" para números reais
📌 Importante: Os índices começam sempre em 0 (zero) em C!
⚠️ Cuidado: Se você declarou int vetor[10], os índices válidos são 0 até 9. Usar vetor[10] causa comportamento imprevisível (acesso inválido de memória)!
int vetor[10]; // 10 espaços reservados
for(int i = 0; i < 10; i++) { scanf("%d", &vetor[i]); // Lê um valor para a posição i }
Cada iteração do for lê UM número e o guarda na posição i do vetor.
O & antes de vetor[i] é necessário porque scanf precisa do endereço de memória.
for(int i = 0; i < 10; i++) { printf("%d ", vetor[i]); // Imprime cada valor }
💡 Dica de Ouro: Sempre que você ver no enunciado "leia N números", pense imediatamente em:
for(i = 0; i < N; i++) { scanf("%d", &vetor[i]); }
Este é um dos padrões mais comuns com vetores. Vamos entender o raciocínio:
🎯 Objetivo: Imprimir o vetor de trás para frente.
Se o vetor tem tamanho N, a última posição é N - 1
for(i = N - 1; i >= 0; i--) { printf("%d ", vetor[i]); }
Vetor original: [5, 8, 3, 7, 9]
Ordem inversa: [9, 7, 3, 8, 5]
O laço começa em i=4 (índice do 9) e vai até i=0 (índice do 5).
for(i = 0; i < 10; i++) { invertido[i] = original[9 - i]; // Mapeamento: 0→9, 1→8, 2→7... }
int maior = vetor[0];
for(i = 1; i < N; i++) { if(vetor[i] > maior) { maior = vetor[i]; // Atualiza se encontrar valor maior } }
Imagine que você está procurando a pessoa mais alta em uma fila:
for(i = 0; i < 20; i++) { if(vetor[i] % 2 == 0) { printf("%d - par\n", vetor[i]); } else { printf("%d - impar\n", vetor[i]); } }
💡 Lembrete: O operador % (módulo) retorna o resto da divisão. Se numero % 2 == 0, o número é par (resto zero).
if(vetor[i] >= 0) { // Positivo (inclui zero) } else { // Negativo }
"Quantos são maiores/menores/iguais ao primeiro elemento?"
int referencia = vetor[0];
int maiores = 0, menores = 0, iguais = 0;
for(i = 1; i < 10; i++) { if(vetor[i] > referencia) maiores++; else if(vetor[i] < referencia) menores++; else iguais++; }
⚠️ Atenção: Comece o laço de i = 1, não de i = 0. O elemento na posição 0 é a referência e não deve ser comparado com ele mesmo!
float soma = 0.0; for(i = 0; i < 10; i++) { soma += temp[i]; // Acumula cada temperatura } float media = soma / 10.0; // Divide pelo total
💡 Fórmula da Média: media = soma / quantidade_de_elementos
Use float ou double para a média, pois o resultado pode ter casas decimais.
Este exercício pede: Soma = (M[0]-M[19])³ + (M[1]-M[18])³ + ... + (M[9]-M[10])³
| Par | Índice da frente | Índice de trás |
|---|---|---|
| 1º | 0 | 19 |
| 2º | 1 | 18 |
| 3º | 2 | 17 |
| ... | ... | ... |
| 10º | 9 | 10 |
📌 Percebeu? i + (19-i) = 19 sempre! O índice de trás é 19 - i.
double soma = 0.0; for(i = 0; i < 10; i++) { soma += pow(M[i] - M[19 - i], 3); // pow(base, expoente) = base^expoente }
🔧 Não esqueça: Para usar pow(), inclua no topo do programa:
#include <math.h>
int v[10];)for + scanf% 2if📚 Bons estudos! Pratique cada padrão e você dominará vetores rapidamente! 🚀